package com.joe.runaway.config.ai;

import dev.langchain4j.community.model.dashscope.QwenChatModel;
import dev.langchain4j.community.model.dashscope.QwenStreamingChatModel;
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Component;

@Component
@Getter
@Setter
public class LangChain4JProvider {
    private final LangChain4JQwenConfig langChain4JQwenConfig;
    private final QwenChatModel qwenChatModel;
    private final QwenStreamingChatModel qwenStreamingChatModel;

    public LangChain4JProvider(LangChain4JQwenConfig qwenConfig) {

        this.langChain4JQwenConfig = qwenConfig;
        this.qwenChatModel = QwenChatModel.builder()
                .baseUrl(qwenConfig.getChatModel().getBaseUrl())
                .apiKey(qwenConfig.getChatModel().getApiKey())
                .modelName(qwenConfig.getChatModel().getModelName())
                .build();
        this.qwenStreamingChatModel = QwenStreamingChatModel.builder()
                .baseUrl(qwenConfig.getChatModel().getBaseUrl())
                .apiKey(qwenConfig.getChatModel().getApiKey())
                .modelName(qwenConfig.getChatModel().getModelName())
                .build();
    }


//    private final OpenAiChatModel          openAiChatModel;
//    private final OpenAiStreamingChatModel openAiStreamingChatModel;
//
//    private final OllamaChatModel          ollamaChatModel;
//    private final OllamaStreamingChatModel ollamaStreamingChatModel;
//
//    private final OllamaEmbeddingModel ollamaEmbeddingModel;
//
//    private final OpenAiImageModel     openAiImageModel;
//
//    private LangChain4JOpenAIConfig langChain4JOpenAIConfig;
//    private LangChain4JOllamaConfig langChain4JOllamaConfig;
//
//    @Autowired
//    public LangChain4JProvider(LangChain4JOpenAIConfig langChain4JOpenAIConfig, LangChain4JOllamaConfig langChain4JOllamaConfig) {
//        this.langChain4JOpenAIConfig = langChain4JOpenAIConfig;
//        this.langChain4JOllamaConfig = langChain4JOllamaConfig;
//
//        this.openAiChatModel = new OpenAiChatModel.OpenAiChatModelBuilder()
//                .baseUrl(langChain4JOpenAIConfig.getChatModel().getBaseUrl())
//                .apiKey(langChain4JOpenAIConfig.getChatModel().getApiKey())
//                .modelName(langChain4JOpenAIConfig.getChatModel().getModelName()).build();
//
//        this.openAiStreamingChatModel = new OpenAiStreamingChatModel.OpenAiStreamingChatModelBuilder()
//                .baseUrl(langChain4JOpenAIConfig.getStreamingChatModel().getBaseUrl())
//                .apiKey(langChain4JOpenAIConfig.getStreamingChatModel().getApiKey())
//                .modelName(langChain4JOpenAIConfig.getStreamingChatModel().getModelName())
//                .build();
//
//        this.ollamaChatModel = OllamaChatModel.builder()
//                .baseUrl(langChain4JOllamaConfig.getChatModel().getBaseUrl())
//                .modelName(langChain4JOllamaConfig.getChatModel().getModelName())
//                .build();
//
//        this.ollamaStreamingChatModel = OllamaStreamingChatModel.builder()
//                .baseUrl(langChain4JOllamaConfig.getStreamingChatModel().getBaseUrl())
//                .modelName(langChain4JOllamaConfig.getStreamingChatModel().getModelName())
//                .build();
//
//        this.ollamaEmbeddingModel = OllamaEmbeddingModel.builder()
//                .baseUrl(langChain4JOllamaConfig.getEmbeddingModel().getBaseUrl())
//                .modelName(langChain4JOllamaConfig.getEmbeddingModel().getModelName())
//                .build();
//
//        this.openAiImageModel = OpenAiImageModel.builder()
//                .baseUrl(langChain4JOpenAIConfig.getImageModel().getBaseUrl())
//                .apiKey(langChain4JOpenAIConfig.getImageModel().getApiKey())
//                .modelName(langChain4JOpenAIConfig.getImageModel().getModelName())
//                .build();
//
//    }

}

